package com.algomypractice.sort.timecomplexityon2;

import com.annotation.service.SortTest;

/**
 * @author: ZhouBert
 * @date: 2019/6/12
 * @description: 冒泡排序（稳定）
 */
public class BubbleSort {

	/**
	 * 每一次只交换相邻的
	 *
	 * @param arr
	 */
	@SortTest
	public static void bubbleSortOptimize(int[] arr) {
		int temp = 0;
		boolean flag=false;
		for (int j = arr.length - 1; j >= 0; j--) {
			flag = false;
			for (int i = 0; i < arr.length - 1; i++) {
				if (arr[i] > arr[i + 1]) {
					flag=true;
					temp = arr[i];
					arr[i] = arr[i + 1];
					arr[i+1]=temp;
				}
			}
			if (!flag){
				break;
			}
		}
	}

	/**
	 * 普通冒泡排序
	 * @param arr
	 */
	@SortTest
	public static void bubbleSort(int[] arr){
		int temp = 0;
		for (int j = arr.length - 1; j >= 0; j--) {
			for (int i = 0; i < arr.length - 1; i++) {
				if (arr[i] > arr[i + 1]) {
					temp = arr[i];
					arr[i] = arr[i + 1];
					arr[i+1]=temp;
				}
			}
		}
	}
}
